Many types of input devices are presently available for performing operations in a computing system, such as buttons or keys, mice, trackballs, touch panels, joysticks, touch screens and the like. Touch screens, in particular, are becoming increasingly popular because of their ease and versatility of operation as well as their declining price. Touch screens can include a touch panel, which can be a clear panel with a touch-sensitive surface. The touch panel can be positioned in front of a display screen so that the touch-sensitive surface covers the viewable area of the display screen. Touch screens can allow a user to make selections and move a cursor by simply touching the display screen via a finger or stylus. In general, the touch screen can recognize the touch and position of the touch on the display screen, and the computing system can interpret the touch and thereafter perform an action based on the touch event.
Touch panels can include an array of touch sensors capable of detecting touch events (the touching of fingers or other objects upon a touch-sensitive surface). Future panels may be able to detect multiple touches (the touching of fingers or other objects upon a touch-sensitive surface at distinct locations at about the same time) and near touches (fingers or other objects within the near-field detection capabilities of their touch sensors), and identify and track their locations. Examples of multi-touch panels are described in Applicant's co-pending U.S. application Ser. No. 10/842,862 entitled “Multipoint Touchscreen,” filed on May 6, 2004 and published as U.S. Published Application No. 2006/0097991 on May 11, 2006, the contents of which are incorporated by reference herein.
Proximity sensor panels are another type of input device that can include an array of proximity sensors capable of detecting hover events (the no-touch, close proximity hovering of fingers or other objects above a surface but outside the near-field detection capabilities of touch sensors) as well as touch events. Proximity sensor panels may also be able to detect multiple instances of hovering referred to herein as multi-hover events (the hovering of fingers or other objects above a surface at distinct locations at about the same time). Examples of a proximity sensor, a proximity sensor panel, a multi-hover panel and a computing system using both an multi-touch panel and proximity sensors are described in Applicant's co-pending U.S. application Ser. No. 11/649,998 entitled “Proximity and Multi-Touch Sensor Detection and Demodulation,” filed on Jan. 3, 2007, the contents of which are incorporated by reference herein.
Proximity sensor panels can be employed either alone or in combination with multi-touch panels. In addition, it is noted that some touch sensors, particularly capacitive touch sensors, can detect some hovering or proximity. Proximity sensors, as referred to herein, are understood to be distinct from touch sensors, including touch sensors that have some ability to detect proximity. Multi-touch sensor panels capable of detecting multi-touch events and multi-hover sensor panels capable of detecting multi-hover events may collectively be referred to herein as multi-event sensor panels.
Both touch sensor panels and proximity sensor panels can be formed as an array of rows and columns of sensors. To scan a sensor panel, a stimulus can be applied to one row with all other rows held at DC voltage levels, although it is possible to drive a group of rows simultaneously and derive the results for each row. When a row is stimulated, a modulated output signal can appear on the columns of the sensor panel. The columns can be connected to analog channels (also referred to herein as event detection and demodulation circuits) that may be implemented using analog and/or digital circuits. For every row that is stimulated, each analog channel connected to a column generates an output value representative of an amount of change in the modulated output signal due to a touch or hover event occurring at the sensor located at the intersection of the stimulated row and the connected column. After analog channel output values are obtained for every column in the sensor panel, a new row is stimulated (with all other rows once again held at DC voltage levels), and additional analog channel output values are obtained. When all rows have been stimulated and analog channel output values have been obtained, the sensor panel is said to have been “scanned,” and a complete “image” of touch or hover can be obtained over the entire sensor panel. This image of touch or hover can include an analog channel output value for every pixel (row and column) in the panel, each output value representative of the amount of touch or hover that was detected at that particular location.
Thus, for example, if a finger touched down directly in the center of a touch panel, the resultant image of touch would include analog channel output values for the pixels located near the center of the panel indicative of touch events occurring at those pixels. The pixels with these output values might be generally grouped together in a oval or ellipsoidal, fingerprint-shaped cluster. Furthermore, the pixels in the center of that oval can have output values indicative of a greater of degree of touch than those pixels at the outside edges of the oval. A similar image of hover can be captured for a finger hovering over the center of the panel.
As mentioned above, a display screen can be located beneath the sensor panel or integrated with the sensor panel. A user interface (UI) algorithm can generate a virtual keypad or other virtual input interface beneath the sensor panel that can include virtual buttons, pull-down menus and the like. By detecting touch or hover events at locations defined by the virtual buttons, the UI algorithm can determine that a virtual button has been “pushed.” The magnitude of the analog channel output values, indicating the “degree” of touch or hover, can be used by the UI algorithm to determine whether there was a sufficient amount of touch or hover to trigger the pushing of the virtual button.
Ideally, a particular amount of touch or hover should generate an analog channel output value of the same magnitude, and thus trigger a corresponding virtual button at the same level or amount of touch or hover, regardless of where the touch or hover event occurred on a sensor panel. However, the electrical characteristics of the sensors in a sensor panel are likely to vary due to processing variations, manufacturing tolerances and assembly differences (which can be due to the location of the sensors in relation to the edges and shape of the sensor panel). For example, variations in the etching pattern for the ITO, variations in the dielectric constant of the glass substrate, the presence of microbubbles in the laminated stackup of materials that form the sensor panel, routing differences in traces on the panel and flex circuits connecting to the panel, or differences in the dielectric constant of the cover plastic, can affect the magnitude of the analog channel output values from location to location within the sensor panel. This can lead to false triggering of virtual buttons or non-triggering of virtual buttons, and a difficult user experience as the user discovers that certain areas of the sensor panel require more or less touching, or closer or farther hovering in order to trigger a virtual button.
To provide a more uniform response from the sensor panel given the same amount of touch or hover, the sensor panel can be calibrated or normalized during boot-up of the computing device that uses the sensor panel. This calibration process can involve scanning the entire sensor panel to determine raw baseline (no-touch or no-hover) output values for each sensor in the panel, and then subtracting out differences in the output values so that all sensor output values are normalized to approximately the same value. With a normalized baseline, subsequent touch or hover events can be more easily detected as increases in output values as compared to the normalized no-touch or no-hover output values, and the same amount of touch or hover at any location in the sensor panel is more likely to consistently trigger a corresponding virtual button.
However, this normalization process presumes that there are no fingers or other objects touching or hovering above the surface of the sensor panel when the raw baseline output values are first obtained. If a user, for example, powers up an electronic device while the user's finger was touching or hovering above the sensor panel, the raw baseline output values for the sensors at which a touch or hover event is detected will be higher than if no finger was present. The higher raw baseline output values for those sensors will be incorrectly interpreted as no-touch or no-hover output values, and the normalization process will generate erroneous normalized baseline values for those sensors.
In addition, even with a normalized baseline, and regardless of whether fingers are present during boot-up, temperature drift can cause the sensor output values to change, which will tend to skew the normalized baseline.